package org.timeismoney.payment.service.impl;

import java.io.Serializable;
import java.util.List;

import org.apache.log4j.Logger;
import org.timeismoney.payment.common.PageBean;
import org.timeismoney.payment.dao.GenericDao;
import org.timeismoney.payment.exception.SysException;
import org.timeismoney.payment.service.BaseService;

public class BaseServiceImpl<E, I extends Serializable> implements
		BaseService<E, I> {

	private static Logger		log	= Logger.getLogger(BaseServiceImpl.class);

	private GenericDao<E, I>	dao;

	public void setDao(GenericDao<E, I> dao) {
		this.dao = dao;
	}

	public GenericDao<E, I> getDao() {
		return dao;
	}

	public I save(E e) {
		try {
			return dao.save(e);
		} catch (Exception e1) {
			log.error(e1.getMessage(), e1);
			throw new SysException(e1.getMessage(), e1);
		}
	}

	public void delete(E e) {
		try {
			dao.delete(e);
		} catch (Exception e1) {
			log.error(e1.getMessage(), e1);
			throw new SysException(e1.getMessage(), e1);
		}
	}

	public void update(E e) {
		try {
			dao.update(e);
		} catch (Exception e1) {
			log.error(e1.getMessage(), e1);
			throw new SysException(e1.getMessage(), e1);
		}
	}

	public E get(I id) {
		try {
			return dao.getEntity(id);
		} catch (Exception e) {
			log.error(e.getMessage(), e);
			throw new SysException(e.getMessage(), e);
		}
	}

	public List<E> getAll() {
		try {
			return dao.getEntitys();
		} catch (Exception e) {
			log.error(e.getMessage(), e);
			throw new SysException(e.getMessage(), e);
		}
	}

	public void findByPageBean(PageBean<E> pageBean) {
		try {
			dao.find(pageBean);
		} catch (Exception e) {
			log.error(e.getMessage(), e);
			throw new SysException(e.getMessage(), e);
		}
	}

}
